package fun.werfamily.wf.order.core.infrastructure.mapper;


import fun.werfamily.wf.order.core.infrastructure.dataobject.OrderGoodsCartDO;

import java.util.List;

public interface OrderGoodsCartMapper {

    int insertSelective(OrderGoodsCartDO record);

    OrderGoodsCartDO selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(OrderGoodsCartDO record);

    /**
     * 查询用户购物车
     * @param userCode
     * @return
     */
    List<OrderGoodsCartDO> listByUserCode(String userCode);

    /**
     * 根据用户和商品查询购物车项
     * @param userCode
     * @param skuCode
     * @return
     */
    OrderGoodsCartDO selectByUserCodeAndSkuCode(String userCode, String skuCode);

    /**
     * 更新用户购物车商品数量
     * @param userCode
     * @param skuCode
     * @param quantity
     * @return
     */
    int updateQuantityByUserCodeAndSkuCode(String userCode, String skuCode, Integer quantity);

    /**
     * 累加购物车商品数量
     * @param userCode
     * @param skuCode
     * @param quantity
     * @return
     */
    int addQuantityByUserCodeAndSkuCode(String userCode, String skuCode, Integer quantity);

    /**
     * 删除购物车商品
     * @param userCode
     * @param skuCodes
     * @return
     */
    int removeByUserCodeAndSkuCode(String userCode, List<String> skuCodes);

    /**
     * 清空用户购物车
     * @param userCode
     * @return
     */
    int removeAllByUserCode(String userCode);

    /**
     * 获取购物车商品总数量
     * @return
     */
    Integer countCartItems(String userCode);
}